/*
 * vardecl.h
 */

#ifndef __VARDECL_H__
#define __VARDECL_H__

#include <system.h>
#include <v93.h>
#include "adp.h"
#include "spec.h"

extern struct PCMINFO pInfo[];	/* PCM 再生用 */
extern zero struct KEYDATA Pad00, Pad10; /* パッドデータ保存用 */
extern zero playmode_t playmode; /* ゲーム方法 */
extern int oldplaymode;          /* 以前のゲームモード */
extern zero int round;		/* 現在のラウンド数 */
extern zero int whichFall;	/* どっちが落ちたか */
extern zero int destroy[];	/* コアが破壊されたかどうか */
extern zero int destroyBoss;	/* ボスが破壊されたかどうか */
extern zero int machPlayer1;
extern zero int machPlayer2;
extern int backpos1;
extern int backpos2;

extern float Locate[][3];	/* world position */
extern fix187 OrigGroundLoc[][3]; /* 初期地面オブジェクトの位置 */
extern fix187 GroundLoc[][3];	/* 地面オブジェクトの位置 */
extern zero fix187 GroundScale;	/* 地面オブジェクトの大きさ */
extern zero float GroundEdgeLoc; /* 地面端の座標 */
extern object Ground[];		/* object address array */
extern Material groundMaterial;	/* ground material data structure */

extern char *backname[];	/* 背景データファイル名 */
extern char *grname[];		/* 地面データファイル名 */

extern machine Machine[];	/* player's vehicle */
extern machtype MachineType[];	/* vehicle's type */
extern machimage MachineImage[]; /* 機体選択時パラメータイメージ */
extern pfunc_t parfunc[];	/* 機体パラメータ設定関数 */
extern mfunc_t manfunc[];	/* 機体操作関数 */
extern int CarColor[];		/* カラー */

extern Material aMaterial[];	/* object material data structure */

extern unsigned short *grdatTable[]; /* 地面オブジェクトデータテーブル */
extern unsigned long grdatLength[]; /* 地面オブジェクトデータの長さ */
extern unsigned short bosscore[]; /* ボス破壊可能なオブジェクトデータテーブル */
extern unsigned long bosscoreLength; /* ボスコアデータの長さ */
extern float bosscoreLocate[][3]; /* ボスコア位置 */
extern unsigned short filereadbuf[];
extern unsigned short fontbuf[];
extern unsigned short pict_bg4_fxg[]; /* 1P vs 2P 機種選択時背景 */

extern unsigned short obj01_g[], obj02_g[], obj03_g[], obj04_g[], obj05_g[], obj06_g[], boss_g[];
extern unsigned long obj01_g_length, obj02_g_length, obj03_g_length, obj04_g_length, obj05_g_length, obj06_g_length;
extern unsigned long boss_g_length;

extern int obj01_g_tindex[], obj02_g_tindex[], obj03_g_tindex[], obj04_g_tindex[], obj05_g_tindex[], obj06_g_tindex[];
extern int boss_g_tindex[];

extern unsigned short alpha_b_g[], alpha_f_g[], alpha_l_g[], alpha_o_g[], alpha_u_g[], alpha_y_g[];
extern unsigned long alpha_b_g_length, alpha_f_g_length, alpha_l_g_length;
extern unsigned long alpha_o_g_length, alpha_u_g_length, alpha_y_g_length;
extern unsigned short alpha_b_f[], alpha_f_f[], alpha_l_f[], alpha_o_f[], alpha_u_f[], alpha_y_f[];
extern unsigned long alpha_b_f_length, alpha_f_f_length, alpha_l_f_length;
extern unsigned long alpha_o_f_length, alpha_u_f_length, alpha_y_f_length;

extern unsigned short obj01_minmax[];
extern unsigned short obj02_minmax[];
extern unsigned short obj03_minmax[];
extern unsigned short obj04_minmax[];
extern unsigned short obj05_minmax[];
extern unsigned short obj06_minmax[];
extern unsigned short boss_minmax[];
extern unsigned short *minmaxTable[];

extern unsigned short alpha_b_minmax[];
extern unsigned short alpha_f_minmax[];
extern unsigned short alpha_l_minmax[];
extern unsigned short alpha_o_minmax[];
extern unsigned short alpha_u_minmax[];
extern unsigned short alpha_y_minmax[];

#endif /* __VARDECL_H__ */
